#ifndef RV32I_SC_INSTEXER_H
#define RV32I_SC_INSTEXER_H

#include "tlm_utils/simple_target_socket.h"
#include "tlm_utils/simple_initiator_socket.h"
#include "systemc.h"
#include "tlm.h"
#include "Inst.h"

class InstExer : public sc_module {
public:
    SC_HAS_PROCESS(InstExer);

    InstExer(sc_module_name name);

    tlm_utils::simple_target_socket<InstExer>  target_socket;

private:
    void
    recieveInst(tlm::tlm_generic_payload  &payload, sc_core::sc_time &delay_time);

    void
    sendPC();

    uint32_t pc;
};


#endif //RV32I_SC_INSTEXER_H
